package br.com.scpe.managedbean.negocio.atividade;

import java.util.List;
import java.util.Map;

import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;

import br.com.scpe.ejb.entity.Atividade;
import br.com.scpe.ejb.entity.Funcionario;
import br.com.scpe.ejb.entity.Projeto;
import br.com.scpe.ejb.sessionBean.FuncionarioSessionBean;
import br.com.scpe.managedbean.BaseManagedBean;
import br.com.scpe.util.SCHSconstantes;

@ViewScoped
@ManagedBean
public class ListarAtividadeManagedBean extends BaseManagedBean{
	
	public ListarAtividadeManagedBean() {
		super();
	}
	
	private Funcionario funcionario;
	private Projeto projeto;
	private Atividade atividade;
	
	private List<Funcionario> listaFuncionarios;
	private List<Atividade> listaAtividades;
	
	
	@EJB
	private FuncionarioSessionBean funcionarioSessionBean;
	
	private Map<String, Object> requestMap = FacesContext.getCurrentInstance().getExternalContext().getRequestMap();
	
	private int tipoFiltro;
	
	private Long mes;
	private Long ano;

	@PostConstruct
	public void init() {
		funcionario = (Funcionario) requestMap.get("funcionario");
		tipoFiltro = (Integer) requestMap.get("tipoFiltro");
		mes = (Long) requestMap.get("mes");
		ano = (Long) requestMap.get("ano");
		atividade = (Atividade) requestMap.get("atividade");
		projeto = (Projeto) requestMap.get("projeto");
		
		listarFuncionarios();
	}

	public void listarFuncionarios(){
		
		switch (tipoFiltro) {
		
			case SCHSconstantes.CONSULTA_POR_NOME:
				listaFuncionarios = funcionarioSessionBean.consultaPorNome(funcionario.getNome());
				break;
			case SCHSconstantes.CONSULTAR_POR_EMAIL:
				listaFuncionarios = funcionarioSessionBean.consultaPorEmailLista(funcionario.getEmail());
				break;
			case SCHSconstantes.CONSULTAR_POR_DEPARTAMENTO:
				listaFuncionarios = funcionarioSessionBean.consultaPorDepartamento(funcionario.getDepartamento());
				break;
			case 5:
				listaFuncionarios = funcionarioSessionBean.consultaTodosFuncionarios();
				break;
			default:
				break;
			}
		}
	
	public String selecionarFuncionario() {
		requestMap.put("funcionario", funcionario);
		requestMap.put("ano", ano);
		requestMap.put("mes", mes);
		requestMap.put("tipoFiltro", tipoFiltro);
		requestMap.put("projeto", projeto);
		requestMap.put("atividade", atividade);
		return SCHSconstantes.PAGINA_DETALHAR_ATIVIDADES_USUARIO;
	}
	
	
	public String voltarTelaConsultaUsuarioAtividade(){
		return SCHSconstantes.PAGINA_CONSULTAR_USUARIO_ATIVIDADE;
	}
	
	/*==================== GETTERS AND SETTERS =======================*/

	public Funcionario getFuncionario() {
		return funcionario;
	}

	public void setFuncionario(Funcionario funcionario) {
		this.funcionario = funcionario;
	}

	public List<Funcionario> getListaFuncionarios() {
		return listaFuncionarios;
	}

	public void setListaFuncionarios(List<Funcionario> listaFuncionarios) {
		this.listaFuncionarios = listaFuncionarios;
	}

	public int getTipoFiltro() {
		return tipoFiltro;
	}

	public void setTipoFiltro(int tipoFiltro) {
		this.tipoFiltro = tipoFiltro;
	}

	public Long getMes() {
		return mes;
	}

	public void setMes(Long mes) {
		this.mes = mes;
	}

	public Long getAno() {
		return ano;
	}

	public void setAno(Long ano) {
		this.ano = ano;
	}

	public List<Atividade> getListaAtividades() {
		return listaAtividades;
	}

	public void setListaAtividades(List<Atividade> listaAtividades) {
		this.listaAtividades = listaAtividades;
	}
}